import Vue from 'vue';
import Vuex from 'vuex';

Vue.use(Vuex);

import loginInfo from './loginInfo.js';
import postParams from './postParams.js';
import platform_app from './platform_app.js';
import customerList from './customerList.js';
import cusInfo from './cusInfo.js';


export default new Vuex.Store({
  modules: {
    loginInfo,
    postParams,
    platform_app,
    customerList,
    cusInfo,
  },
  state: Object.assign(
    {
      paramsResetFlag: 0,//用于监听复位变化的，本身值无意义
      ceInfo: { ceid: null },//试验一下
      leftView: [],
      middleView: [],
      rightView: [],
    },
    {
      isMobile: false,
      mobileView: ['L', 'M', 'R'][0],
      leftView: ['ww700ef5383c507884', 'wwe3b98afa2796c566'],
      middleView: ['list', 'orgTree', 'label', 'search'][0],
      rightView: ['none', 'singular', 'plural'][1],
      draftView: ['text', 'msgNew', 'image', 'video', 'file'][0],
    },
    {
      draftClipboard: '',
      draftText: '',
      draftImage: {},
      draftMpnews: {},
      draftVideo: {},
      draftFile: {},
    },//缓存部分草稿,素材库选择的部分,用store缓存便于全局清空
    {
      loginInfo: null,
      // {
      //   employeeName: '',
      //   employeeUserId: '',//登录APP客服聊天用的主要身份参数
      //   encEmployeeUserId: '',
      //   imgUrl: '',
      // }
    },
    {
      useConditionalMass: false,//使用条件组群发，将条件发送服务端，由服务端检索发送池发送
    },
    {//条件区,常规请求都要带的参数
      conditional: {
        /*公司员工ID,companyEmplyoee,*/
        companyEmployeeId: '',//
        /*在middle部分的条件*/
        isStar: false,
        unread: 0,//0：未选，1：未读，2：已读
        bubbling: 0,//0：未选，1：未冒泡，2：冒泡
        isOnlyNoReply: false,//是否只要未回复（全部:false,只要未回复:true）
        selftag: [""],//搜索自用标签（selfTagId用","分隔）,getter中合并
        unselftag: [""],
        /* 首期存在，后来又不需要，现在（2022-8-31）又加上来的 */
        fromSourceId: '',
        isInTime: false,
        inTimeBegin: '',
        inTimeEnd: '',
      }
    },
    {
      /* 首期存在，后来又不需要，现在（2022-8-31）又加上来的 */
      fromSources: [
        {
          fromSource_Id: 0,
          remark: "开发中",
          company_Department_Id: 0,
          code: "",
          department_Name: "",
          adChannel: "",
          isSyncToQywx: 0
        }
      ],//资源渠道,2022-8-31需求增加,要整成某个单选的条件参数
      /** */
      selfTags: [],//客户进度标签，客服修改单选，列表渲染需要查表使用：2022-7-19
      uPlatformId: 'ww700ef5383c507884',// 平台：唯一，现在这个基本没用了，现在又有用了
      uObjApp: {
        pid: undefined,
        id: undefined,
        name: undefined,
        icon: undefined,
      },// 应用：唯一,现在通过这个属性同时返回esid和appid的对象
      uObjCus: {
        id: undefined,
        eSCompanyId: undefined,
        nickname: undefined,
        tel: undefined,
      },// 用户：单选info用，多选时会复位回null
      uObjCusTags: [],
      isAlltouser: false,
      aObjCus: [
        // {id:1,nickname:'1'},
        // {id:2,nickname:'2'},
      ],// 用户：复选判定为checked
      aTreeOrg: [
        // {id:3,label:'3'},
        // {id:4,label:'4'},
      ],// 组织结构：多选
      aObjLabel: [
        // {id:5,text:'5'},
        // {id:6,text:'6'},
      ],// 标签：多选
    },//对话框所需的目标组,在常规渲染时对比高亮用
    {
      listApp: [],//L,应用选择区的风琴列表,二级结构: 一级esId唯一, 二级agentId不唯一, 必需二重定位
      cusAppArray: {
        isAll: true,
        pid: '',//客户平台ID
        arrId: [],//客户应用ID列表,一维数组
      },
      cusList_Page_state: {
        isLock: false,
        list: [],
        page: { current: 1, size: 20, total: 0 },
        status: { total: 0, maopao: 0 },
      },
      listCus: [],//M,客户选择区的散列表
      listCusPage: {
        total: 0,
        size: 20,
      },
      // stateValueCus: [],//客户选择区的状态栏,用数组收入,[客户数,冒泡数]

      treeOrg: [],//M,客户选择区的树状表
      defaultExpandedKeys: [0],//默认展开的节点的 key 的数组
      listLabel: [],//M,客户选择区的标签列表

      msgList: [],//对话框内容区,需要mutations提供清空和插入的方法

      cusInfo: {
        visibility: false, x: 0, y: 0, content: {}
      },
    },
    {
      wsMsgIn: {},//接收来自websocket的广播消息，同时在各组件中监听该值，用于触发各自所需的数据
      wsMsgFromCus: {},
      wsMsgFromApp: { new: 1 },
      wsMsgToApp: {},

    },
  ),
  getters: {
    a: (ctx) => {
      return function (s) {
        return ctx.platform_app.ARRSORT
      }
    }
  },
  mutations: {
    resetParams(ctx) {
      ctx.paramsResetFlag++;
    },//用于监听复位变化的，本身值无意义

    // setCompanyEmplyoeeId(state, value) {
    //   state.conditional.companyEmployeeId = value;
    // },
    // setLoginInfo(state, loginMsg) {
    //   state.loginInfo = loginMsg;
    // },
  },

  actions: {

  },
})